package com.hsnn.medstgmini.base.std.service.impl;

import java.io.OutputStream;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.hsnn.medstgmini.base.std.dao.StdCompgroupDao;
import com.hsnn.medstgmini.base.std.dao.StdCompinfoDao;
import com.hsnn.medstgmini.base.std.dao.StdCompinfoLogDao;
import com.hsnn.medstgmini.base.std.model.StdCompgroup;
import com.hsnn.medstgmini.base.std.model.StdCompgroupLog;
import com.hsnn.medstgmini.base.std.model.StdCompinfo;
import com.hsnn.medstgmini.base.std.service.StdCompgroupManager;
import com.hsnn.medstgmini.model.Result;
import com.hsnn.medstgmini.util.Pagination;
import com.hsnn.medstgmini.util.PinYin;

@SuppressWarnings("deprecation")
@Service
@Transactional
public class StdCompgroupManagerImpl implements StdCompgroupManager {
	
	@Autowired
	private StdCompgroupDao stdCompgroupDao;
	
	@Autowired
	private StdCompinfoDao stdCompInfoDao;
	
	@Autowired
	private StdCompinfoLogDao stdCompinfoLogDao;
	

	@Override
	public void attachDirty(StdCompgroup instance) {
		if(instance.getCompGroupId()!=null&&!instance.getCompGroupId().equals("")){
			StdCompgroup sht=stdCompgroupDao.getById(instance.getCompGroupId());
			sht.setCompGroupCode(instance.getCompGroupCode());
			sht.setCompGroupName(instance.getCompGroupName());
			sht.setRemark(instance.getRemark());
			sht.setUpdDatetime(instance.getUpdDatetime());
			sht.setUpdUser(instance.getUpdUser());
			sht.setCompGroupShortname(instance.getCompGroupShortname());
			sht.setCompGroupSpelName(PinYin.getPinYinHeadChar(instance.getCompGroupName()));
			sht.setCompShortSpelCode(PinYin.getPinYinHeadChar(instance.getCompGroupShortname()));
			stdCompgroupDao.update(sht);
			return;
		}
		instance.setCompGroupSpelName(PinYin.getPinYinHeadChar(instance.getCompGroupName()));
		instance.setCompShortSpelCode(PinYin.getPinYinHeadChar(instance.getCompGroupShortname()));
		stdCompgroupDao.attachDirty(instance);
	}
	

	@Override
	public List<StdCompgroupLog> queryStdCompgroupLog(Result result, String tid,String startTime,String endTime) {
		return stdCompgroupDao.getLogByResult(result,tid,startTime,endTime);
	}

	@Override
	public Long queryStdCompgroupListSize(StdCompgroup instance) {
		return stdCompgroupDao.getSizeByResult(instance);
	}

	@Override
	public long queryLogSizeByResult(Result result, String tid,
			String startTime, String endTime) {
		return stdCompgroupDao.getLogSizeByResult(result, tid, startTime, endTime);
	}

	@Override
	public boolean checkStdCompgroup(StdCompgroup instance) {
		return stdCompgroupDao.checkHosptypeCode(instance);
	}
	@Override
	public boolean checkCompGroupName(StdCompgroup instance) {
		return stdCompgroupDao.checkCompGroupName(instance);
	}

	@Override
	public StdCompgroup getCompGroupById(String id) {
		return stdCompgroupDao.getById(id);
	}

	@Override
	public Pagination getCompListByBroupId(Pagination page) {
		return stdCompgroupDao.getStdCompinfoListByPage(page);
	}
	
	@Override
	public Pagination getStdCompinfoListButHB(Pagination page) {
		return stdCompgroupDao.getStdCompinfoListButHB(page);
	}
	
	@Override
	public long getCompListSizeByBroupId(Pagination page) {
		return stdCompgroupDao.getStdCompinfoListSizeByPage(page);
	}

	

	@Override
	public void batchGroupAddComp(List<StdCompinfo> list) {
		stdCompgroupDao.batchGroupAddComp(list);
	}

	/**
	 * @category 获取集团信息
	 * @author 韩守松
	 * @date   2015年6月12日
	 * @param  @return
	 */
	@Override
	public List<StdCompgroup> getQYCompgroup() {
		return stdCompgroupDao.getQYCompgroup();
	}
	
	/**
	 * @category 获取集团信息
	 * @author 韩守松
	 * @date   2015年6月12日
	 * @param  @return
	 */
	@Override
	public List<StdCompgroup> getAll() {
		return stdCompgroupDao.getAll();
	}

	/**
	 * @category 根据集团id获取集团信息
	 * @author 韩守松
	 * @date   2015年6月12日
	 * @param  @param id
	 * @param  @return
	 */
	@Override
	public StdCompgroup getById(String id) {
		return stdCompgroupDao.getById(id);
	}
	
	/**
	 * 集团（启、停）
	 */
	public int batchStarts (StdCompgroup instance) {
		return stdCompgroupDao.batchStarts(instance);
	}
	/**
	 * 企业库 维护记录查询所有及条件查询
	 * 
	 * @param stdCompinfoLog
	 * @return
	 */
	@Transactional
	public List<Map<String,Object>> queryStdCompinfoLogByName(Pagination page,StdCompgroupLog stdCompgroupLog) {
		
		List<Map<String,Object>> list = stdCompgroupDao.queryStdCompinfoLogByName(page,stdCompgroupLog);
		for(int i = 0;i<list.size();i++){
			String detail = list.get(i).get("detail")==null?"":list.get(i).get("detail").toString();
			if(StringUtils.isNotBlank(detail)){
				if(detail.toString().indexOf(",")<0){
					detail = "新增数据:<br/>".concat(detail.replaceAll(";", "<br/>"));
					
				}else{
					detail= detail.replaceAll(":", "由");
					detail= detail.replaceAll(",", "变为");
					detail= detail.replaceAll(";", "<br/>");
				}
			}
			list.get(i).put("detail", detail);
		}
		
		return list;
	}
	@Override
	public List<Map<String, Object>> getDicDrugformLogDetail(Pagination page) {
		return stdCompgroupDao.getDicDrugformLogDetail(page);
	}
	/**
	 * 集团库 信息查询及条件查询
	 * @param stdCompinfo
	 * @return
	 */
	public Pagination queryStdCompinfoList(Pagination page,StdCompgroup stdCompgroup) {
		return stdCompgroupDao.queryStdCompinfoList(page,stdCompgroup);
	}
	
	//public Pagination getStdCompgroupNoPage(Pagination page){
//		return stdCompgroupDao.getStdCompgroupNoPage(page);
	//			
//	}

	public void exportExcel(Pagination page,OutputStream os){
		stdCompgroupDao.exportExcel(page,os);
    }
}
